home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / dfpp01.zip / KEYBOARD.H < prev    next >
C/C++ Source or Header  |  1992-11-21  |  4KB  |  129 lines

  1. // ------------ keyboard.h
  2.  
  3. #ifndef KEYBOARD_H
  4. #define KEYBOARD_H
  5.  
  6. #include <dos.h>
  7. #include "dflatdef.h"
  8.  
  9. class Keyboard    {
  10.     union REGS regs;
  11.     int shift;        // BIOS shift state
  12.     Bool keydown;    // True if the key is down
  13.     Bool insert;    // insert/overstrike mode
  14. public:
  15.     Keyboard();
  16.     Bool ShiftChanged();
  17.     int AltConvert(int);
  18.     int GetKey();
  19.     int GetShift();
  20.     Bool KeyHit();
  21.     void clearBIOSbuffer();
  22.     void DispatchEvent();
  23.     int ShiftState() { return shift = GetShift(); }
  24.     void SetInsertMode()   { insert = True; }
  25.     void ClearInsertMode() { insert = False; }
  26.     Bool InsertMode()      { return insert; }
  27. };
  28.  
  29. const int KEYBOARDVECT = 9;
  30. const int KEYBOARDPORT = 0x60;
  31.  
  32. inline void Keyboard::clearBIOSbuffer()
  33. {
  34.     *(int far *)(MK_FP(0x40,0x1a)) = 
  35.     *(int far *)(MK_FP(0x40,0x1c));
  36. }
  37.  
  38. // ----- keyboard BIOS (0x16) functions
  39. const int KEYBRD = 0x16;
  40. const int READKB = 0;
  41. const int KBSTAT = 1;
  42.  
  43. const int ZEROFLAG = 0x40;
  44. const int OFFSET = 0x1000;
  45.  
  46. const int RUBOUT = 8;
  47. const int BELL   = 7;
  48. const int ESC    = 27;
  49. const unsigned F1          = (187+OFFSET);
  50. const unsigned F8          = (194+OFFSET);
  51. const unsigned SHIFT_F8    = (219+OFFSET);
  52. const unsigned F10         = (196+OFFSET);
  53. const unsigned HOME        = (199+OFFSET);
  54. const unsigned UP          = (200+OFFSET);
  55. const unsigned PGUP        = (201+OFFSET);
  56. const unsigned BS          = (203+OFFSET);
  57. const unsigned FWD         = (205+OFFSET);
  58. const unsigned END         = (207+OFFSET);
  59. const unsigned DN          = (208+OFFSET);
  60. const unsigned PGDN        = (209+OFFSET);
  61. const unsigned INS         = (210+OFFSET);
  62. const unsigned DEL         = (211+OFFSET);
  63. const unsigned CTRL_HOME   = (247+OFFSET);
  64. const unsigned CTRL_PGUP   = (132+OFFSET);
  65. const unsigned CTRL_BS     = (243+OFFSET);
  66. const unsigned CTRL_FIVE   = (143+OFFSET);
  67. const unsigned CTRL_FWD    = (244+OFFSET);
  68. const unsigned CTRL_END    = (245+OFFSET);
  69. const unsigned CTRL_PGDN   = (246+OFFSET);
  70. const unsigned SHIFT_HT    = (143+OFFSET);
  71. const unsigned ALT_A       = (158+OFFSET);
  72. const unsigned ALT_B       = (176+OFFSET);
  73. const unsigned ALT_C       = (174+OFFSET);
  74. const unsigned ALT_D       = (160+OFFSET);
  75. const unsigned ALT_E       = (146+OFFSET);
  76. const unsigned ALT_F       = (161+OFFSET);
  77. const unsigned ALT_G       = (162+OFFSET);
  78. const unsigned ALT_H       = (163+OFFSET);
  79. const unsigned ALT_I       = (151+OFFSET);
  80. const unsigned ALT_J       = (164+OFFSET);
  81. const unsigned ALT_K       = (165+OFFSET);
  82. const unsigned ALT_L       = (166+OFFSET);
  83. const unsigned ALT_M       = (178+OFFSET);
  84. const unsigned ALT_N       = (177+OFFSET);
  85. const unsigned ALT_O       = (152+OFFSET);
  86. const unsigned ALT_P       = (153+OFFSET);
  87. const unsigned ALT_Q       = (144+OFFSET);
  88. const unsigned ALT_R       = (147+OFFSET);
  89. const unsigned ALT_S       = (159+OFFSET);
  90. const unsigned ALT_T       = (148+OFFSET);
  91. const unsigned ALT_U       = (150+OFFSET);
  92. const unsigned ALT_V       = (175+OFFSET);
  93. const unsigned ALT_W       = (145+OFFSET);
  94. const unsigned ALT_X       = (173+OFFSET);
  95. const unsigned ALT_Y       = (149+OFFSET);
  96. const unsigned ALT_Z       = (172+OFFSET);
  97. const unsigned ALT_1      = (0xf8+OFFSET);
  98. const unsigned ALT_2      = (0xf9+OFFSET);
  99. const unsigned ALT_3      = (0xfa+OFFSET);
  100. const unsigned ALT_4      = (0xfb+OFFSET);
  101. const unsigned ALT_5      = (0xfc+OFFSET);
  102. const unsigned ALT_6      = (0xfd+OFFSET);
  103. const unsigned ALT_7      = (0xfe+OFFSET);
  104. const unsigned ALT_8      = (0xff+OFFSET);
  105. const unsigned ALT_9      = (0x80+OFFSET);
  106. const unsigned ALT_0      = (0x81+OFFSET);
  107. const unsigned ALT_HYPHEN = (130+OFFSET);
  108. const unsigned CTRL_F4    = (225+OFFSET);
  109. const unsigned ALT_F4     = (235+OFFSET);
  110. const unsigned ALT_F6     = (237+OFFSET);
  111.  
  112. enum {CTRL_A=1,CTRL_B,CTRL_C,CTRL_D,CTRL_E,CTRL_F,CTRL_G,CTRL_H,
  113.         CTRL_I,CTRL_J,CTRL_K,CTRL_L,CTRL_M,CTRL_N,CTRL_O,CTRL_P,
  114.         CTRL_Q,CTRL_R,CTRL_S,CTRL_T,CTRL_U,CTRL_V,CTRL_W,CTRL_X,
  115.         CTRL_Y,CTRL_Z };
  116.  
  117. // ------- BIOS shift key mask values
  118. const int RIGHTSHIFT = 0x01;
  119. const int LEFTSHIFT  = 0x02;
  120. const int CTRLKEY    = 0x04;
  121. const int ALTKEY     = 0x08;
  122. const int SCROLLLOCK = 0x10;
  123. const int NUMLOCK    = 0x20;
  124. const int CAPSLOCK   = 0x40;
  125. const int INSERTKEY  = 0x80;
  126.  
  127. #endif
  128.  
  129.